home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / lib / python2.6 / dist-packages / DistUpgrade / apt-autoinst-fixup.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2009-10-12  |  2.3 KB  |  61 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import sys
  5. import os
  6. import warnings
  7. warnings.filterwarnings('ignore', 'apt API not stable yet', FutureWarning)
  8. import apt
  9. import apt_pkg
  10. import logging
  11. logging.basicConfig(level = logging.DEBUG, filename = '/var/log/dist-upgrade/apt-autoinst-fixup.log', format = '%(asctime)s %(levelname)s %(message)s', filemode = 'w')
  12. cache = apt.Cache()
  13. min_version = '0.6.20ubuntu13'
  14. if apt_pkg.VersionCompare(cache['python-apt'].installedVersion, min_version) < 0:
  15.     logging.error('Need at least python-apt version %s ' % min_version)
  16.     sys.exit(1)
  17.  
  18. logging.debug('Starting to check for auto-install states that need fixup')
  19. need_fixup = set()
  20. need_fixup.add('mdadm')
  21. for pkg in cache:
  22.     if pkg.isInstalled and pkg.section == 'metapackages':
  23.         logging.debug("Found installed meta-pkg: '%s' " % pkg.name)
  24.         dependsList = pkg._pkg.CurrentVer.DependsList
  25.         for t in [
  26.             'Depends',
  27.             'PreDepends',
  28.             'Recommends']:
  29.             if dependsList.has_key(t):
  30.                 for depOr in dependsList[t]:
  31.                     for dep in depOr:
  32.                         depname = dep.TargetPkg.Name
  33.                         if cache[depname].isInstalled and cache._depcache.IsAutoInstalled(cache[depname]._pkg):
  34.                             logging.info("Removed auto-flag from package '%s'" % depname)
  35.                             need_fixup.add(depname)
  36.                             continue
  37.                     
  38.                 
  39.         
  40.  
  41. if len(need_fixup) > 0:
  42.     action = 0
  43.     STATE_FILE = apt_pkg.Config.FindDir('Dir::State') + 'extended_states'
  44.     if os.path.exists(STATE_FILE):
  45.         tagfile = apt_pkg.ParseTagFile(open(STATE_FILE))
  46.         outfile = open(STATE_FILE + '.tmp', 'w')
  47.         while tagfile.Step():
  48.             pkgname = tagfile.Section.get('Package')
  49.             autoInst = tagfile.Section.get('Auto-Installed')
  50.             if pkgname in need_fixup:
  51.                 newsec = apt_pkg.RewriteSection(tagfile.Section, [], [
  52.                     ('Auto-Installed', str(action))])
  53.                 outfile.write(newsec + '\n')
  54.                 continue
  55.             outfile.write(str(tagfile.Section) + '\n')
  56.         os.rename(STATE_FILE, STATE_FILE + '.fixup-save')
  57.         os.rename(outfile.name, STATE_FILE)
  58.         os.chmod(STATE_FILE, 420)
  59.     
  60.  
  61.